#include <iostream>

using namespace std;
// 231. 2的幂
// 给你一个整数 n，请你判断该整数是否是 2 的幂次方。如果是，返回 true ；否则，返回 false 。
// 如果存在一个整数 x 使得 n == 2x ，则认为 n 是 2 的幂次方。

// 位运算
class Solution {
public:
    bool isPowerOfTwo(int n) {
//        return n > 0 && (n & -n) == n;  // 取最低位的1和后面的0
        return n > 0 && (n & (n-1)) == 0;
    }
};
int main() {
    std::cout << boolalpha << Solution().isPowerOfTwo(1) << std::endl;  // true
    std::cout << boolalpha << Solution().isPowerOfTwo(16) << std::endl; // true
    std::cout << boolalpha << Solution().isPowerOfTwo(3) << std::endl;  // false
    std::cout << boolalpha << Solution().isPowerOfTwo(4) << std::endl;  // true
    std::cout << boolalpha << Solution().isPowerOfTwo(5) << std::endl;  // false

    return 0;
}
